////
////  GTMBase64.h
////
////  Copyright 2006-2008 Google Inc.
////
////  Licensed under the Apache License, Version 2.0 (the "License"); you may not
////  use this file except in compliance with the License.  You may obtain a copy
////  of the License at
////
////  http://www.apache.org/licenses/LICENSE-2.0
////
////  Unless required by applicable law or agreed to in writing, software
////  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
////  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
////  License for the specific language governing permissions and limitations under
////  the License.
////
//
//#import <Foundation/Foundation.h>
//#import "GTMDefines.h"
//
//// GTMBase64
////
///// Helper for handling Base64 and WebSafeBase64 encodings
////
///// The webSafe methods use different character set and also the results aren't
///// always padded to a multiple of 4 characters.  This is done so the resulting
///// data can be used in urls and url query arguments without needing any
///// encoding.  You must use the webSafe* methods together, the data does not
///// interop with the RFC methods.
////
//@interface GTMBase64 : NSObject
//
////
//// Standard Base64 (RFC) handling
////
//
//// encodeData:
////
///// Base64 encodes contents of the NSData object.
////
///// Returns:
/////   A new autoreleased NSData with the encoded payload.  nil for any error.
////
//+ (NSData *)encodeData:(NSData *)data;
//
//// decodeData:
////
///// Base64 decodes contents of the NSData object.
////
///// Returns:
/////   A new autoreleased NSData with the decoded payload.  nil for any error.
////
//+ (NSData *)decodeData:(NSData *)data;
//
//// encodeBytes:length:
////
///// Base64 encodes the data pointed at by |bytes|.
////
///// Returns:
/////   A new autoreleased NSData with the encoded payload.  nil for any error.
////
//+ (NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length;
//
//// decodeBytes:length:
////
///// Base64 decodes the data pointed at by |bytes|.
////
///// Returns:
/////   A new autoreleased NSData with the encoded payload.  nil for any error.
////
//+ (NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length;
//
//// stringByEncodingData:
////
///// Base64 encodes contents of the NSData object.
////
///// Returns:
/////   A new autoreleased NSString with the encoded payload.  nil for any error.
////
//+ (NSString *)stringByEncodingData:(NSData *)data;
//
//// stringByEncodingBytes:length:
////
///// Base64 encodes the data pointed at by |bytes|.
////
///// Returns:
/////   A new autoreleased NSString with the encoded payload.  nil for any error.
////
//+ (NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length;
//
//// decodeString:
////
///// Base64 decodes contents of the NSString.
////
///// Returns:
/////   A new autoreleased NSData with the decoded payload.  nil for any error.
////
//+ (NSData *)decodeString:(NSString *)string;
//
////
//// Modified Base64 encoding so the results can go onto urls.
////
//// The changes are in the characters generated and also allows the result to
//// not be padded to a multiple of 4.
//// Must use the matching call to encode/decode, won't interop with the
//// RFC versions.
////
//
//// webSafeEncodeData:padded:
////
///// WebSafe Base64 encodes contents of the NSData object.  If |padded| is YES
///// then padding characters are added so the result length is a multiple of 4.
////
///// Returns:
/////   A new autoreleased NSData with the encoded payload.  nil for any error.
////
//+ (NSData *)webSafeEncodeData:(NSData *)data
//                      padded:(BOOL)padded;
//
//// webSafeDecodeData:
////
///// WebSafe Base64 decodes contents of the NSData object.
////
///// Returns:
/////   A new autoreleased NSData with the decoded payload.  nil for any error.
////
//+ (NSData *)webSafeDecodeData:(NSData *)data;
//
//// webSafeEncodeBytes:length:padded:
////
///// WebSafe Base64 encodes the data pointed at by |bytes|.  If |padded| is YES
///// then padding characters are added so the result length is a multiple of 4.
////
///// Returns:
/////   A new autoreleased NSData with the encoded payload.  nil for any error.
////
//+ (NSData *)webSafeEncodeBytes:(const void *)bytes
//                       length:(NSUInteger)length
//                       padded:(BOOL)padded;
//
//// webSafeDecodeBytes:length:
////
///// WebSafe Base64 decodes the data pointed at by |bytes|.
////
///// Returns:
/////   A new autoreleased NSData with the encoded payload.  nil for any error.
////
//+ (NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length;
//
//// stringByWebSafeEncodingData:padded:
////
///// WebSafe Base64 encodes contents of the NSData object.  If |padded| is YES
///// then padding characters are added so the result length is a multiple of 4.
////
///// Returns:
/////   A new autoreleased NSString with the encoded payload.  nil for any error.
////
//+ (NSString *)stringByWebSafeEncodingData:(NSData *)data
//                                  padded:(BOOL)padded;
//
//// stringByWebSafeEncodingBytes:length:padded:
////
///// WebSafe Base64 encodes the data pointed at by |bytes|.  If |padded| is YES
///// then padding characters are added so the result length is a multiple of 4.
////
///// Returns:
/////   A new autoreleased NSString with the encoded payload.  nil for any error.
////
//+ (NSString *)stringByWebSafeEncodingBytes:(const void *)bytes
//                                   length:(NSUInteger)length
//                                   padded:(BOOL)padded;
//
//// webSafeDecodeString:
////
///// WebSafe Base64 decodes contents of the NSString.
////
///// Returns:
/////   A new autoreleased NSData with the decoded payload.  nil for any error.
////
//+ (NSData *)webSafeDecodeString:(NSString *)string;
//
//+ (NSString *)md5_base64:(NSString *)inPutText;
//
//+ (NSString *)encodeBase64String:(NSString *)input;
//+ (NSString *)decodeBase64String:(NSString *)input;
//
//+ (NSString *)encodeBase64Data:(NSData *)data;
//+ (NSString *)decodeBase64Data:(NSData *)data;
//
//@end
